<?php
// 应用公共文件

/**
 * 获取毫秒时间戳
 */
function get_millisecond(): string
{
    $time = explode(" ", microtime());
    $time = $time[1] . ($time[0] * 1000);
    $time2 = explode(".", $time);
    return $time2[0];
}

/**
 * 计算两个经纬度的距离（返回单位：km）
 * @param float $lng1 经度1
 * @param float $lat1 纬度1
 * @param float $lng2 经度2
 * @param float $lat2 纬度2
 * @return float|int
 */
function calculate_distance(float $lng1, float $lat1, float $lng2, float $lat2)
{
    $r = 6378.137; // 地球半径
    $lat1 = $lat1 * 3.14 / 180.0;
    $lat2 = $lat2 * 3.14 / 180.0;
    $lat = $lat1 - $lat2;

    $lng1 = $lng1 * 3.14 / 180.0;
    $lng2 = $lng2 * 3.14 / 180.0;
    $lng = $lng1 - $lng2;

    $s = 2 * asin(sqrt(pow(sin($lat / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($lng / 2), 2)));
    $s = $s * $r;
    return round($s * 10000) / 10000;
}

/**
 * 去除字符串中的（空格，换行，中文逗号转英文逗号）
 * @param string $str
 * @return string
 */
function remove_str_messy_info(string $str): string
{
    $str = str_replace(' ', '', $str);
    $str = str_replace('，', ',', $str);
    return str_replace(PHP_EOL, '', $str);
}

/**
 * 计算两个日期相隔多少天
 * @param $day1
 * @param $day2
 * @return int
 */
function count_day_diff(string $day1, string $day2): int
{
    $second1 = strtotime($day1);
    $second2 = strtotime($day2);

    $diff = $second1 > $second2 ? $second1 - $second2 : $second2 - $second1;
    return intval($diff / 86400);
}